package com.highper.common.entity.po.admin;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Author ZhangGJ
 * @Date 2021/11/26 17:38
 */
@Data
@TableName("menu")
public class Menu implements Serializable {

    private static final long serialVersionUID = 305494053798927082L;
    /**
     * 菜单ID
     */
    @TableId(value = "menu_id", type = IdType.AUTO)
    private Long menuId;
    /**
     * 菜单路由
     */
    @NotBlank
    private String menuRoute;
    /**
     * 菜单路由名称
     */
    @NotBlank
    private String menuRouteName;
    /**
     * 父级菜单
     */
    @NotNull
    private Long parentId;
    /**
     * 权限字符
     */
    @NotBlank
    private String permission;
    /**
     * 菜单名称
     */
    @NotBlank
    private String menuName;
    /**
     * 菜单类型(0菜单 1按钮)
     */
    @NotNull
    private Integer menuType;
    /**
     * 排序
     */
    @NotNull
    private Integer orderNum;
    /**
     * 是否展示 1-隐藏 0-展示
     */
    @NotNull
    private Integer menuShow;
    /**
     * 图标
     */
    private String menuIcon;
    /**
     * 创建人
     */
    private Long createBy;
    /**
     * 修改人
     */
    private Long updateBy;
    /**
     * 删除人
     */
    private Long deleteBy;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 删除时间
     */
    private Date deleteTime;

    /**
     * 子节点
     */
    @TableField(exist = false)
    private List<Menu> children = new ArrayList<>();

    public void setChildren(Menu menu) {
        children.add(menu);
    }

    @TableField(exist = false)
    private String parentMenuName;

}

